#include <bits/stdc++.h>

using namespace std;

const int n = 10;
const int m = 10;

random_device rd;//随机数种子
default_random_engine gen(rd());//随机数
uniform_int_distribution<int> dist(0, n - 1);//均匀分布~[0,n-1]

int maze[n][m] = {};  // 迷宫地图数组，0表示通路，1表示障碍物
vector<pair<int, int>> directions = {{-1, 0},
                                     {0,  1},
                                     {1,  0},
                                     {0,  -1}};  // 四个方向向量

bool in_map(int x, int y) {  // 判断坐标是否越界
    return x >= 0 && x < n && y >= 0 && y < m;
}

void generate_maze(int sx, int sy) {
    stack<pair<int, int>> s;  // 用栈来存储当前点
    s.push({sx, sy});
    while (!s.empty()) {
        int x = s.top().first, y = s.top().second;
        s.pop();
        for (auto &dir : directions) {  // 遍历四个方向
            int nx = x + dir.first, ny = y + dir.second;
            if (in_map(nx, ny) && maze[nx][ny] == 0) {  // 如果当前方向是通路
                maze[nx][ny] = 1;  // 标记为已访问
                s.push({nx, ny});  // 入栈
                continue;
            }

        }
    }
}

int main() {


    //int sx = dist(gen), sy = dist(gen);  // 随机选择起点
    int sx = 0, sy = 0;
    maze[sx][sy] = 1;
    generate_maze(sx, sy);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << maze[i][j] << ' ';
        }
        cout << endl;
    }
    return 0;
}